<?php
/**
 * Classe controladora para envio de newsletter
 * @author Renato Lenz e Emanuel Melo @ TICE
 */
class TICE_Controlador_Newsletter extends PC4_Controlador_APP_CRUD {

	public $descricao;
	
	function init($caminho, $modelo = null, $formView = '', $listaView = '', $editaView = '', $nomeSessao = 'usuarios', $urlLogin = 'admin/login/', $urlProibido = 'admin/main/proibido'){
		$this->caminho = $caminho;
		if (empty($modelo)) {
			$modelo = new TICE_Crud_Newsletter();
		}
		parent::init($modelo, $formView, $listaView, $editaView, $nomeSessao, $urlLogin, $urlProibido);

	}
	
	function getTexto() {
		$texto = $this->load->view('email', array('parametros' => array('' => $_POST['texto'])), true);
		return $texto;
	}
	function getDestinatarios() {
		$descricao = $_POST['tipo'];
		$modelo = new PC4_Crud_Abstrato($descricao);
		$rsDestinatarios = $modelo->consulta('id in (' . implode(',', $_POST['destinatarios']) . ')');
		$emails = array();
		foreach ($rsDestinatarios as $destinatario) {
			$email = array(
				'nome' => $destinatario->nome,
				'email' => $destinatario->email
			);
			$emails[] = $email;
		}
		return $emails;
	}
	function getDescricao() {
		$descricao = $this->descricao;
		return $descricao;
	}
	
	/**
	 * Template method
	 * Define um texto
	 * Define os destinatarios
	 * Inicializa o envio
	 */
	function trataNovo() {
		$texto = $this->getTexto();
		$emails = $this->getDestinatarios();
		if (empty($emails)) {
			$this->resultadoNovo(array('É preciso selecionar pelo menos um destinatário.'));
		}
		$descricao = $this->getDescricao();			

		$this->modelo->novoEnvio($emails, $texto, $descricao);
		$this->resultadoNovo(1);
	}
	function envia($envio) {
		$this->layout->view = 'blank';
		
		$this->modelo->envia($envio);

		$dados = array(
			'dispachante' => $this->modelo,
			'id' => $envio
		);
		
		$this->load->view('admin/' . $this->nomeSecao . '_envios', $dados);			
	}
	
	function lista() {
		$rsEnvios = $this->modelo->getStatusEnvios();

		$this->dados['rs'] = $rsEnvios;
		$this->dados["total"] = count($envios);
		$this->load->view($this->listaView, $this->dados);
	}
	
}
